export default {

  data() {
    return {
      title: undefined,
      open: false,
      form: {},
      rules: {},
      //swtich状态改变的标题
      swtichTips: ''
    }
  },
  methods: {
    // 取消表单
    cancelForm() {
      // 还原表单样式
      if (this.$refs['form']) {
        this.$refs['form'].resetFields();
      }
      this.form = {}
      this.open = false
    },
    // 新增数据按钮
    handleAdd() {
      this.title = '新增数据'
      this.cancelForm()
      //在新增之前做一些增强 (钩子函数)
      if (this.beforeHandlerAdd) {
        this.beforeHandlerAdd()
        this.open = true
      } else {
        this.open = true
      }
    },
    // 修改数据按钮
    handleUpdate(row) {
      // 点击 操作下面修改
      this.title = '编辑数据'
      this.cancelForm()

      let id = undefined
      if (row) {
        id = row.id
      } else {
        id = this.ids[0]
      }
      //查询数据(钩子)
      if (this.beforeHandlerUpdate) {
        this.beforeHandlerUpdate(id)
        // ajax查询后台数据，需要花时间的
        setTimeout(() => {
          if(this.form.id){
            this.open = true
          }
        }, 500)

      } else {
        this.$notify.error({
          title: '修改提示',
          message: '你需要自己添加一个名为beforeHandlerUpdate(id)的钩子函数'
        });
      }
    },
    //删除按钮
    handleDelete(row) {
      let id = []
      if (row) {
        id.push(row.id)
      } else {
        id = this.ids.filter(p => p > 0)
      }

      if (!this.beforehandleDelete) {
        this.$notify.error({
          title: '提示',
          message: '你需要自己添加一个名为beforehandleDelete(id)的钩子函数'
        });

        return;
      }

      this.$confirm('此操作将永久删除数据, 是否继续?', '删除确认', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        // 钩子函数
        this.beforehandleDelete(id);
      }).catch(() => {

      })
    },
    // 状态改变 switch组件
    handleStatusChange(row) {
      // row.status===0 从1停用--》0启用
      //  row.status===1 从0启用--》1停用
      this.swtichTips = row.status === 0 ? '确认要启用该账户吗?' : '确认要停用该账户吗？'

      if (!this.beforeHandleStatusChange) {
        this.$notify.error({
          title: '提示',
          message: '你要添加beforeHandleStatusChange(id,status)的钩子函数'
        });
        // 还原之前的值
        row.status = row.status === 0 ? 1 : 0
        return;
      }

      this.$confirm(this.swtichTips, '询问', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        // 钩子函数
        this.beforeHandleStatusChange(row.id, row.status)
      }).catch(() => {
        row.status = row.status === 0 ? 1 : 0
      })
    },
    // 通用新增修改保存按钮
    submitForm() {

      if (!this.afterSubmitFormHandler) {
        this.$notify.error({
          title: '提示',
          message: '你要添加afterSubmitFormHandler()的钩子函数'
        });
        return;
      }

      // 验证数据有效性
      this.$refs["form"].validate(valid => {
        if (valid) {
          // 保存数据(之前钩子函数 额外的验证)
          if (this.beforeSubmitValidate) {
            // 一定返回boolean
            if (!this.beforeSubmitValidate()) {
              return;
            }
          }
          //真正保存操作
          if (this.afterSubmitFormHandler) {
            this.afterSubmitFormHandler()
          }

        }
      })
    }
  }

}
